package com.proyecto.core.vista.echo.componentes;

import java.util.EventListener;
import java.util.ResourceBundle;

import nextapp.echo2.app.Alignment;
import nextapp.echo2.app.ApplicationInstance;
import nextapp.echo2.app.Border;
import nextapp.echo2.app.Color;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Extent;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Label;
import nextapp.echo2.app.Row;
import nextapp.echo2.app.SplitPane;
import nextapp.echo2.app.TextArea;
import nextapp.echo2.app.event.ActionEvent;
import nextapp.echo2.app.event.ActionListener;
import nextapp.echo2.app.layout.RowLayoutData;

import com.proyecto.core.vista.echo.base.RwBotoneraAceptarCancelar;
import com.proyecto.core.vista.echo.constantes.MensajeTipo;

import consultas.echo2consultas.SpWindowPane;

public class DialogoMensajes extends SpWindowPane {
	
    private Label contentLabel;
    private int controlConfiguration;
    private ResourceBundle resourceBundle;
    private RwBotoneraAceptarCancelar rwBotoneraAceptarCancelar;
	private TextArea txaMensaje;
	
	public static final int VENT_ACEPTARCANCELAR = 1;
	public static final int VENT_ACEPTAR         = 2;
	public static final int VENT_CANCELAR        = 3;
	
    private ActionListener actionProcessor = new ActionListener() {
        public void actionPerformed(ActionEvent e) { 
            getParent().remove(DialogoMensajes.this);
            EventListener[] listeners = getEventListenerList().getListeners(ActionListener.class);
            ActionEvent outgoingEvent = new ActionEvent(this, e.getActionCommand());
            for (int i = 0; i < listeners.length; ++i) {
                ((ActionListener) listeners[i]).actionPerformed(outgoingEvent);
            }
        }
    };
	
	public DialogoMensajes(String title, String message, int i) {
        super();
        //System.out.println("DialogoMensajes:: " + title);
        rwBotoneraAceptarCancelar = new RwBotoneraAceptarCancelar(i);
        rwBotoneraAceptarCancelar.getBtnAceptar().addActionListener(actionProcessor);
        rwBotoneraAceptarCancelar.getBtnCancelar().addActionListener(actionProcessor);
        initComponents();
        setTitle(title);
        setMessage(message);
        cambiarStyleWindow(i);
    }
    
	public DialogoMensajes(int tipoVentana, String title, String message, int i) {
        super();
        rwBotoneraAceptarCancelar = new RwBotoneraAceptarCancelar(i);
        rwBotoneraAceptarCancelar.getBtnAceptar().addActionListener(actionProcessor);
        rwBotoneraAceptarCancelar.getBtnCancelar().addActionListener(actionProcessor);
        switch (tipoVentana) {
		case VENT_ACEPTARCANCELAR:
			rwBotoneraAceptarCancelar.getBtnAceptar().setVisible(true);
			rwBotoneraAceptarCancelar.getBtnCancelar().setVisible(true);
			break;
		case VENT_ACEPTAR:
			rwBotoneraAceptarCancelar.getBtnAceptar().setVisible(true);
			rwBotoneraAceptarCancelar.getBtnCancelar().setVisible(false);
			break;
		case VENT_CANCELAR:
			rwBotoneraAceptarCancelar.getBtnAceptar().setVisible(false);
			rwBotoneraAceptarCancelar.getBtnCancelar().setVisible(true);
			break;
		default:
			break;
		}
        initComponents();
        setTitle(title);
        setMessage(message);
        cambiarStyleWindow(i);
    }
	
	public void addActionListener(ActionListener l) {
        getEventListenerList().addListener(ActionListener.class, l);
    }
     
    public void removerListenerAceptar(){
    	 rwBotoneraAceptarCancelar.getBtnAceptar().removeActionListener(actionProcessor);
    }
    
    public int getControlConfiguration() {
        return controlConfiguration;
    }
    
    public String getMessage() {
        return contentLabel.getText();
    }
    
    public void removeActionListener(ActionListener l) {
        getEventListenerList().removeListener(ActionListener.class, l);
    }
  
    public void setMessage(String message) {
    	txaMensaje.setText(message);
    }
    
    public void cambiarStyleWindow(int i){
    	if(i == MensajeTipo.ALERTA){
        	setStyleName("OpenLabs.SpWPDialogoMensajesError");
        }else{
        	// MensajeTipo.ALERTA_OK y MensajeTipo.CONFIRMACION
        	setStyleName("OpenLabs.SpWPDialogoMensajesConfirm");
        }
    }

	public RwBotoneraAceptarCancelar getRwBotoneraAceptarCancelar() {
		return rwBotoneraAceptarCancelar;
	}

	public void setRwBotoneraAceptarCancelar(
			RwBotoneraAceptarCancelar rwBotoneraAceptarCancelar) {
		this.rwBotoneraAceptarCancelar = rwBotoneraAceptarCancelar;
	}

	/**
	 * Configures initial state of component.
	 * WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		resourceBundle = ResourceBundle.getBundle(
				"com.proyecto.core.vista.echo.resource.localization.etiquetas",
				ApplicationInstance.getActive().getLocale());
		this.setResizable(true);
		this.setHeight(new Extent(250, Extent.PX));
		this.setModal(true);
		SplitPane splitPane1 = new SplitPane();
		splitPane1.setOrientation(SplitPane.ORIENTATION_VERTICAL_BOTTOM_TOP);
		splitPane1.setSeparatorPosition(new Extent(32, Extent.PX));
		add(splitPane1);
		splitPane1.add(rwBotoneraAceptarCancelar);
		Row row1 = new Row();
		row1.setAlignment(new Alignment(Alignment.CENTER, Alignment.DEFAULT));
		splitPane1.add(row1);
		txaMensaje = new TextArea();
		txaMensaje.setWidth(new Extent(350, Extent.PX));
		txaMensaje.setHeight(new Extent(100, Extent.PX));
		txaMensaje.setEnabled(false);
		txaMensaje.setBorder(new Border(new Extent(0, Extent.PX), Color.BLACK,
				Border.STYLE_NONE));
		RowLayoutData txaMensajeLayoutData = new RowLayoutData();
		txaMensajeLayoutData.setInsets(new Insets(new Extent(4, Extent.PX),
				new Extent(20, Extent.PX), new Extent(0, Extent.PX),
				new Extent(0, Extent.PX)));
		txaMensaje.setLayoutData(txaMensajeLayoutData);
		row1.add(txaMensaje);
		Column column1 = new Column();
		row1.add(column1);
	}
}
